#ifndef __DYNAMICARRAY_H__
#define __DYNAMICARRAY_H__

using ElementType = int;
class DynamicArray
{
public:
    DynamicArray(int capacity=10);
    DynamicArray(const DynamicArray &a);
    void operator=(const DynamicArray &a);
    ~DynamicArray();
    void InsertTail(const ElementType& element);
    void show();
    void RemoveByIndex(DynamicArray &a, int index);
    void RemoveByValue(DynamicArray &a, ElementType element);
    DynamicArray FindByElement(const DynamicArray &a, ElementType element);
    void DArrayFastSort(DynamicArray &a);
    friend void FastSort(DynamicArray &a, int start, int end);
    DynamicArray BinarySearch(const DynamicArray &a, ElementType element);
private:
    ElementType *array;
    int size;
    int capacity;
};

#endif